home *** CD-ROM | disk | FTP | other *** search
- /***********************************************
- *
- * file d:\cips\main2seg.c
- *
- * Functions: This file contains
- * main
- *
- * Purpose:
- * This is a calling program that calls
- * the three new segmentation techniques
- * discussed in Image Processing part 10.
- *
- * External Calls:
- * gin.c - get_image_name
- * numcvrt.c - get_integer
- * int_convert
- * tiff.c - read_tiff_header
- * segment2.c - edge_region
- * gray_shade_region
- * edge_gray_shade_region
- *
- * Modifications:
- * 5 December 1992 - created
- *
- ***********************************************/
-
- #include "cips.h"
-
-
-
- short the_image[ROWS][COLS];
- short out_image[ROWS][COLS];
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
-
- char name[80], name2[80], low_high[80], type[80];
- float percent;
- int count, i, ie, il, j, le, length, ll,
- looking = 1, lw, width;
- short value, value2, value3,
- value4, value5, value6;
- struct tiff_header_struct image_header;
-
- _setvideomode(_TEXTC80); /* MSC 6.0 statements */
- _setbkcolor(1);
- _settextcolor(7);
- _clearscreen(_GCLEARSCREEN);
-
- /***********************************************
- *
- * Interpret the command line parameters.
- *
- ************************************************/
-
- if(argc < 4){
- printf(
- "\n\nNot enough parameters:"
- "\n"
- "\n usage: main2seg in-file out-file type"
- " [values ...]"
- "\n"
- "\n recall type: Edge-region edge-gray-grow (C)"
- " Gray-shade-grow"
- "\n"
- "\n main2seg in-file out-file R percent "
- "edge-type "
- "\n min-area max-area diff set-value erode"
- "\n main2seg in-file out-file E percent "
- "edge-type "
- "\n min-area max-area diff set-value erode"
- "\n main2seg in-file out-file G diff "
- "min-area max-area"
- "\n"
- "\n");
- exit(0);
- }
-
- strcpy(name, argv[1]);
- strcpy(name2, argv[2]);
- strcpy(type, argv[3]);
- if(type[0] == 'a' || type[0] == 'A' ||
- type[0] == 'c' || type[0] == 'C' ||
- type[0] == 'e' || type[0] == 'E'){
- percent = atof(argv[4]);
- value = atoi(argv[5]);
- value2 = atoi(argv[6]);
- value3 = atoi(argv[7]);
- value4 = atoi(argv[8]);
- value5 = atoi(argv[9]);
- value6 = atoi(argv[10]);
- }
- else{
- value = atoi(argv[4]);
- value2 = atoi(argv[5]);
- value3 = atoi(argv[6]);
- }
-
- il = 1;
- ie = 1;
- ll = ROWS+1;
- le = COLS+1;
-
- /******************************************
- *
- * Read the input image header and setup
- * the looping counters.
- *
- *******************************************/
-
- read_tiff_header(name, &image_header);
-
- length = (90 + image_header.image_length)/ROWS;
- width = (90 + image_header.image_width)/COLS;
- count = 1;
- lw = length*width;
- printf("\nlength=%d width=%d", length, width);
-
- /********************************
- *
- * Edge only segmentation
- *
- *********************************/
-
- if(type[0] == 'e' || type[0] == 'E'){
- for(i=0; i<length; i++){
- for(j=0; j<width; j++){
- printf("\nrunning %d of %d", count, lw);
- count++;
- edge_region(name, name2, the_image,
- out_image, il+i*ROWS,
- ie+j*COLS, ll+i*ROWS,
- le+j*COLS, value, value2,
- value3, value4, percent,
- value5, value6);
- } /* ends loop over j */
- } /* ends loop over i */
- } /* ends edge_region */
-
- /********************************
- *
- * Gray Shade only segmentation
- *
- *********************************/
-
- if(type[0] == 'g' || type[0] == 'G'){
- for(i=0; i<length; i++){
- for(j=0; j<width; j++){
- printf("\nrunning %d of %d", count, lw);
- count++;
- gray_shade_region(name, name2, the_image,
- out_image, il+i*ROWS,
- ie+j*COLS, ll+i*ROWS,
- le+j*COLS, value,
- value2, value3);
- } /* ends loop over j */
- } /* ends loop over i */
- } /* ends gray_shade_region */
-
- /**********************************
- *
- * Edge and Gray Shade segmentation
- *
- ***********************************/
-
- if(type[0] == 'c' || type[0] == 'C'){
- for(i=0; i<length; i++){
- for(j=0; j<width; j++){
- printf("\nrunning %d of %d", count, lw);
- count++;
- edge_gray_shade_region(name, name2,
- the_image, out_image, il+i*ROWS,
- ie+j*COLS, ll+i*ROWS, le+j*COLS,
- value, value2, value3, value4,
- percent, value5, value6);
- } /* ends loop over j */
- } /* ends loop over i */
- } /* ends edge_gray_shade_region */
-
- } /* ends main */
-
-